package top.yuechenc.manage.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
import top.yuechenc.manage.common.utils.SpStringUtils;
import top.yuechenc.manage.entity.SpAttribute;
import top.yuechenc.manage.mapper.SpAttributeMapper;
import top.yuechenc.manage.service.AttributeService;

import java.util.List;

/**
 * @author wangzhiwei
 */
@Service
public class AttributeServiceImpl implements AttributeService {
    @Autowired
    private SpAttributeMapper attributeMapper;

    @Override
    public PageInfo findListByParam(SpAttribute attribute, int pageNum, int pageSize) {
        Example example = new Example(SpAttribute.class);
        Example.Criteria criteria = example.createCriteria();
        if (SpStringUtils.isNotEmpty(attribute.getAttrId())) {
            criteria.andEqualTo("attrId", attribute.getAttrId());
        }
        if (SpStringUtils.isNotEmpty(attribute.getAttrName())) {
            criteria.andLike("attrName", "%" + attribute.getAttrName() + "%");
        }
        if (SpStringUtils.isNotEmpty(attribute.getAttrSel())) {
            criteria.andEqualTo("attrSel", attribute.getAttrSel());
        }
        if (SpStringUtils.isNotEmpty(attribute.getAttrWrite())) {
            criteria.andEqualTo("attrWrite", attribute.getAttrWrite());
        }
        if (SpStringUtils.isNotEmpty(attribute.getCatId())) {
            criteria.andEqualTo("catId", attribute.getCatId());
        }
        PageHelper.startPage(pageNum, pageSize);

        List<SpAttribute> list = attributeMapper.selectByExample(example);

        return new PageInfo<>(list);
    }

    @Override
    public void addAttr(SpAttribute spAttribute) {
        attributeMapper.insertSelective(spAttribute);
    }

    @Override
    public void updAttr(SpAttribute spAttribute) {
        attributeMapper.updateByPrimaryKeySelective(spAttribute);
    }

    @Override
    public void delAttr(String attrId, String catId) {
        attributeMapper.delById(attrId, catId);
    }

    @Override
    public SpAttribute getById(String attrId, String catId) {
        return attributeMapper.getById(attrId, catId);
    }

    @Override
    public List<SpAttribute> getByParam(SpAttribute attribute) {
        Example example = new Example(SpAttribute.class);
        Example.Criteria criteria = example.createCriteria();
        if (SpStringUtils.isNotEmpty(attribute.getAttrId())) {
            criteria.andEqualTo("attrId", attribute.getAttrId());
        }
        if (SpStringUtils.isNotEmpty(attribute.getAttrName())) {
            criteria.andLike("attrName", "%" + attribute.getAttrName() + "%");
        }
        if (SpStringUtils.isNotEmpty(attribute.getAttrSel())) {
            criteria.andEqualTo("attrSel", attribute.getAttrSel());
        }
        if (SpStringUtils.isNotEmpty(attribute.getAttrWrite())) {
            criteria.andEqualTo("attrWrite", attribute.getAttrWrite());
        }
        if (SpStringUtils.isNotEmpty(attribute.getCatId())) {
            criteria.andEqualTo("catId", attribute.getCatId());
        }

        List<SpAttribute> list = attributeMapper.selectByExample(example);

        return list;
    }
}
